In conventional embedded systems having a processor and an associated memory component, two approaches have been made for the processing of a software interpretive language running on the system. A first approach is a software based approach, in which a software interpreter such as a virtual machine is employed to interpret and assist in processing of an interpretive language. In this software based approach, numerous cycles are required to interpret instructions, fetch instructions from memory and fetch operands from memory. Additionally, in software based interpreters, numerous cycles are required to perform thread switching to enable the processor to switch to a different program running on the system. Disadvantageously, in this software based approach a significant amount of interpreter overhead is required and the necessity of requiring numerous cycles to provide read data to the processor results in slow processing of the interpretive language.
Conventional systems have also employed a hardware based approach, using a processor that executes the interpretive language as its native instruction set. The conventional hardware based approach is very limited in that systems which utilize these processors are capable of executing only the interpretive language. With the conventional hardware based approach, other software applications, such as those that are in a different language than the interpretive language, cannot be run by the processor. Such software applications would have to be changed or replaced in order to be run by the processor. This is highly impractical and inefficient, especially with embedded systems having an existing processor and memory component.